1. Field of the Invention
This invention is related to the field of electric circuit simulation.
2. Description of the Related Art
Circuit simulation tools provide a way for the circuit designer to simulate the behavior of a complex design, identify any problems, and make alterations and enhancements to the circuit before arriving at a final design. That iterative design process has in turn improved the reliability of the end products that incorporate a given circuit design. One of the most popular circuit simulation tools is the Simulation Program with Integrated Circuit Emphasis (or SPICE). Many commercial versions of SPICE are available.
Circuit simulation typically involves the generation of a system of simultaneous equations that define the electrical behavior of the circuit. For example, SPICE is predominantly a Kirckhoffs Current Law (KCL) solver that generates a system of equations according to KCL to represent the circuit behavior. The system of equations may represent linear elements (such as resistors, capacitors, and inductors) as well as nonlinear elements such as transistors. If the circuit includes nonlinear elements (whose state depends on other state in the system, and whose state may affect such other state), a nonlinear solver is employed. In SPICE, the equations governing nonlinear elements are required to be have continuous first derivatives and non-zero second derivatives, so that Newton-Raphson methods can be used in the nonlinear solver. Other nonlinear solvers exist as well (e.g. secant; Broyden, Fletcher, Goldfarb, and Sanno (BFGS); Davidon-Fletcher-Powell (DFP); etc.).
Generally, circuit simulators use the nonlinear solver to generate “guesses” (estimates of the possible solution) for every variable in the system of equations. The solution is evaluated using the estimates, and new estimates are generated, until the difference between guesses from iteration to iteration reduces to some desired threshold.
Since new estimates are calculated for every variable, and the system of equations is re-evaluated for the estimates, the amount of computation time and memory consumed to simulate a circuit of any complexity is generally large. For numerical methods such as BFGS and DFP, the matrices used to solve the system of equations may be more densely populated than the sparse matrices often found for systems in which nonlinear elements have the requirements for using Newton-Raphson. In such numerical methods, the computation time and memory consumption may increase even more rapidly than Newton-Raphson iteration (e.g. according to the square of the number of nodes in the circuit rather than linearly).